home *** CD-ROM | disk | FTP | other *** search
/ Aminet 50 / Aminet 50 (2002)(GTI - Schatztruhe)[!][Aug 2002].iso / Aminet / dev / basic / BlitzLstMay02.lha / BlitzLstMay02 / attachments / mail_54 / kprintf.lha / kprintf.ab2
Text File  |  2002-05-22  |  1KB  |  52 lines

  1. Goto skip_kprintf
  2. ; Push arguments onto stack, last first
  3. ; !PUTSTR{id,"rawdofmt string"}
  4. ; Remove args from stack
  5. ; e.g.:
  6. ;.someroutine:
  7. ;CNIF    #DEBUG=1
  8. ;    PEA.l   $DEADBEEF
  9. ;    !PUTSTR{001,"Fiiiiiiist: $%lX"}
  10. ;    LEA.l   4(a7),a7
  11. ;CEND
  12.  
  13.  
  14. Macro PUTSTR
  15.     MOVEM.l d0-d1/a0-a1,-(a7)
  16.     LEA.l   'msg_`1(pc),a0
  17.     LEA.l   4*4(a7),a1
  18.     JSR     dboutput
  19.     MOVEM.l (a7)+,d0-d1/a0-a1
  20.     BRA     'skip_`1
  21.     'msg_`1: Dc.b `2,10,0 : Even
  22.     'skip_`1:
  23. End Macro
  24.  
  25. #_LVORawPutChar     = -516      ; Send one character in d0:7-0 to the serial port
  26. #_LVORawDoFmt       = -522      ; formats and completes string like printf
  27.  
  28. .Internals
  29. ; Debugging code
  30. ; a0 = pointer to format string
  31. ; a1 = pointer to arguments
  32. dboutput:
  33.     MOVEM.l d0-d1/a0-a3/a6,-(a7)
  34.     MOVE.l  4,a6                            ; Pointer to execbase
  35.     LEA     'KPutChar(pc),a2                ; Pointer to the routine for dumping chars called by RawDoFmt
  36.     SUB.l   a3,a3                           ; Clear a3
  37.     JSR     _LVORawDoFmt(a6)                ; Call exec.library/RawDoFmt()
  38.     MOVEM.l (a7)+,d0-d1/a0-a3/a6
  39.     RTS
  40.  
  41.     'KPutChar:
  42.     MOVE.l  a6,-(a7)
  43.     MOVE.l  4,a6                            ; execbase
  44.     JSR     _LVORawPutChar(a6)              ; print character in d0:7-0 to ser:
  45.     MOVE.l  (a7)+,a6
  46.     RTS
  47. skip_kprintf:
  48.  
  49. ClickMouse
  50. End
  51.  
  52.